iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Modern Web

自己開發一個~?系列 第 8

JAVA程式碼~倒數3天~

  • 分享至 

  • xImage
  •  

解釋JAVA程式碼~
/images/emoticon/emoticon04.gif
終於要結束啦

程式碼

package Concurrent;
import java.util.concurrent.*;

public class CyclicBarrier01 {
	public static void main(String[] args) {
		
		//CyclicBarrier cb = new CyclicBarrier(3, new Action());
		CyclicBarrier cb = new CyclicBarrier(3, 
				()-> System.out.println("這是新的執行緒!"));
		
		System.out.println("Starting");
		new MyThread01(cb, "A");
		new MyThread01(cb, "B");
		new MyThread01(cb, "C");
		
	}
}
class MyThread01 implements Runnable {
	CyclicBarrier cbar;
	String name;

	MyThread01(CyclicBarrier c, String n) {
		cbar = c;
		name = n;
		new Thread(this).start();
	}
	public void run() {
		System.out.println(name);
		try {
			cbar.await();
			System.out.println("恢復後會執行這一行 >.<!---------");
		} catch (BrokenBarrierException exc) {
			System.out.println(exc);
		} catch (InterruptedException exc) {
			System.out.println(exc);
		}
	}
}
class Action implements Runnable {
	public void run() {
		System.out.println("這是新的執行緒!");
	}
}

顯示

https://ithelp.ithome.com.tw/upload/images/20231018/20119035DyfHxGdzav.png


解釋程式碼
這段Java程式碼示範了如何使用CyclicBarrier(循環障礙器)來同步多個執行緒的工作。讓我們逐段解釋它:

  1. main 方法中,首先創建了一個 CyclicBarrier 物件 cb,它的構造函數接受兩個參數:計數器(count)和動作(action)。

  2. 創建了三個執行緒 MyThread01,每個執行緒都傳入 cb 和一個名稱。這三個執行緒將在同時運行。

  3. MyThread01 執行緒的 run 方法中,首先印出名稱,然後使用 cbar.await() 暫停執行緒,等待其他執行緒。

  4. CyclicBarrier 會等待所有三個執行緒都到達障礙點(await()),然後執行障礙點的動作。

  5. 在這個程式中,動作是一個實現 Runnable 接口的 Action 類別,它印出一條訊息。

  6. 當所有三個執行緒都到達障礙點後,動作中的內容將被執行。

總結來說,CyclicBarrier 用於同步多個執行緒,讓它們在某個障礙點處暫停,直到所有執行緒都到達該障礙點,然後執行特定的動作。這有助於協調多個執行緒的工作。

/images/emoticon/emoticon08.gif

謝謝收看/images/emoticon/emoticon41.gif


上一篇
JAVA程式碼~倒數4天~
下一篇
JAVA程式碼~倒數2天~
系列文
自己開發一個~?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言